◾️ 구간별 상태확인
이전 게시글 : [k8s] 쿠버네티스 무게감 있게 설치하기
쿠버네티스를 설치한 후 서버에 접속하여 구간 별로 이상이 없는지 확인해보는 작업을 해볼 것이다.
▪️master / worker
- [4] ~ [7]까지는 쿠버네티스 기본 설치이다. 해당 순번의 작업은 모든 node(master/worker)에 동일하게 적용됨.
- [8] ~ [9]까지는 master node에만 적용
[4] Rocky Linux 기본설정
패키지 업데이트 진행
$ yum -y update
▶ 실행 결과
타임존 설정 확인
(스크립트로 적용된 명령: timedatectl set-timezone Asia/Seoul
)
$ timedatectl
▶ 실행 결과
[5] kubeadm 설치 전 사전작업
방화벽 해제 확인
(스크립트로 적용된 명령: systemctl stop firewalld && systemctl disable firewalld
)
$ systemctl status firewalld
▶ 실행 결과
스왑(swap) 비활성화 확인
$ free -m
$ cat /etc/fstab | grep 'swap'
▶ 실행 결과
Swap에 할당된 자원이 없어야 하고 swap 관련 내용이 잘 주석되었는지 확인
[6] 컨테이너 런타임 설치
[6-1] 컨테이너 런타임 설치 전 사전작업
iptables 세팅
# 설정 세팅 확인
$ cat /etc/modules-load.d/k8s.conf
$ cat /etc/sysctl.d/k8s.conf
# 모듈 적재 확인
$ lsmod | grep "overlay"
$ lsmod | grep "br_netfilter"
▶ 실행 결과
Kubernetes Docs
[6-2] 컨테이너 런타임 (containerd로 설치)
[6-2-1] containerd 패키지 설치
[6-2-1-1] docker engine(containerd.io)만 설치
docker repo 설정 확인
(스크립트로 적용된 명령: yum install -y yum utils, yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
)
$ yum repolist enabled | grep 'docker'
▶ 실행 결과
containerd 설치 확인
(스크립트로 적용된 명령: yum install -y containerd.io-1.6.21-3.1.el8
)
$ systemctl status containerd | grep -i 'active'
▶ 실행 결과
설치 가능한 버전의 containerd.io 리스트 확인
$ yum list containerd.io --showduplicates | sort -r | head -n 10
▶ 실행 결과
[6-3] 컨테이너 런타임 (CRI로 설치)
cri 활성화 확인
(스크립트로 적용된 명령: sed -i 's/^disabled_plugins/#disabled_plugins/' /etc/containerd/config.toml
)
$ cat /etc/containerd/config.toml | grep 'cri'
▶ 실행 결과
[7] kubeadm 설치
repo 설정 확인
$ yum repolist enabled | grep 'kuber'
▶ 실행 결과
SELinux 설정 확인
$ cat /etc/selinux/config
$ sestatus
▶ 실행 결과
kubelet, kubeadm, kubectl 패키지 설치
(스크립트로 적용된 명령: yum install -y kubelet-1.27.1-0.x86_64 kubeadm-1.27.1-0.x86_64 kubectl-1.27.1-0.x86_64 --disableexcludes=kubernetes
)
$ kubeadm version
$ kubectl version
$ systemctl status kubelet | grep -i 'active'
▶ 실행 결과
설치 가능한 버전의 kubeadm 리스트 확인
$ yum list --showduplicates kubeadm --disableexcludes=kubernetes | head -n 10
▶ 실행 결과
▪️ master
[8] kubeadm 클러스터 생성
[8-1] 클러스터 초기화 (Pod Network 설정)
클러스터 상태 확인
(스크립트로 적용된 명령: kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30
)
# master node 상태확인
$ kubectl get node
# pod network cidr 설정 확인
$ kubectl cluster-info dump | grep -m 1 cluster-cidr
# apiserver advertise address 적용 확인
$ kubectl cluster-info
# kubernetes component pod 확인
$ kubectl get pods -n kube-system
▶ 실행 결과
[8-2] kubectl 사용 설정
인증서 설정 확인
$ cat ~/.kube/config
▶ 실행 결과
[8-3] CNI Plugin 설치 (calico)
calico pod 설치 및 pod network cidr 적용 확인
# Calico Pod 상태 확인
$ kubectl get -n calico-system pod
$ kubectl get -n calico-apiserver pod
# Calico에 pod network cidr 적용 확인
$ kubectl get installations.operator.tigera.io default -o yaml | grep cidr
▶ 실행 결과
[8-4] Master에 Pod 생성할 수 있도록 설정
Master Node에 Taint 해제 확인
(스크립트로 적용된 명령: kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane-
)
$ kubectl describe nodes | grep 'Taints'
▶ 실행 결과
[9] 쿠버네티스 편의 기능 설치
[9-1] kubectl 자동완성 기능
kubectl 기능 설정 확인
$ cat ~/.bashrc
▶ 실행 결과
[9-2] Dashboard 설치
dashboard 설치 확인
$ kubectl get pod -n kubernetes-dashboard
▶ 실행 결과
[9-3] Metrics Server 설치
metrics server 설치 확인
$ kubectl get pod -n kube-system | grep 'metrics'
$ kubectl top pod -A
▶ 실행 결과